package com.project.ds;

import java.util.List;

import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;

import com.dtyunxi.ds.BaseMapper;
import com.project.ds.sqlprovider.ActivityUserMapperProvider;
import com.project.entity.activity.ActivityUser;

/**
 * 活动用户实体类Mybatis接口类
 * @author chen.liangzhen
 * @time 2017年3月30日 上午11:17:01
 */
@Mapper
public interface ActivityUserMapper extends BaseMapper<ActivityUser> {
	/**
	 * 对参加该活动的手机号进行查重，若是已有手机号参加该活动，提示该手机号已被使用
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午2:19:08
	 * @version v0.1.0
	 * @param activityId
	 * @param mobile
	 * @return
	 */
	@Select("select count(1) from B_ACTIVITY_USER au where au.activity_id = #{activityId} and au.mobile = #{mobile}")
    public int checkRepetitionApply(@Param("activityId")Long activityId, @Param("mobile")String mobile);
	
	/**
	 * 每个账号只能报名一次
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午2:19:08
	 * @version v0.1.0
	 * @param activityId
	 * @param mobile
	 * @return
	 */
	@Select("select count(1) from B_ACTIVITY_USER au where au.activity_id = #{activityId} and au.user_code = #{userCode}")
    public int checkUserRepetitionApply(@Param("activityId")Long activityId, @Param("userCode")String userCode);
	
	/**
	 * 保存活动用户信息
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午3:32:47
	 * @version v0.1.0
	 * @param activityUser
	 * @return
	 */
	@InsertProvider(type = ActivityUserMapperProvider.class, method = "saveActivityUser")
	@Options(useGeneratedKeys = true, keyProperty = "id")
    public int saveActivityUser(ActivityUser activityUser);
	
	/**
	 * 根据userId查询活动列表
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午4:41:52
	 * @version v0.1.0
	 * @param userId
	 * @return
	 */
	@SelectProvider(type=ActivityUserMapperProvider.class, method="queryByUserId")
    public List<ActivityUser> queryByUserId(@Param("userId")Long userId);
	
	/**
	 * 根据userId查询活动列表
	 * @author chen.liangzhen
	 * @time 2017年3月30日 下午4:41:52
	 * @version v0.1.0
	 * @param userId
	 * @return
	 */
	@SelectProvider(type=ActivityUserMapperProvider.class, method="queryByUserIdAndStatus")
    public List<ActivityUser> queryByUserIdAndStatus(@Param("userId")Long userId, @Param("auditStatus")String auditStatus, 
    		@Param("status")String status, @Param("pageNo")int pageNo, @Param("pageSize")int pageSize);
}